package com.galen.manual.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.galen.manual.dto.TaskCreateDTO;
import com.galen.manual.dto.TaskQueryDTO;
import com.galen.manual.dto.TaskReviewDTO;
import com.galen.manual.dto.TaskUpdateDTO;
import com.galen.manual.vo.TaskListVO;
import com.galen.manual.vo.TaskVO;

import java.util.List;

public interface TaskService {

    /**
     * 获取任务列表
     */
    Page<TaskListVO> getTaskPage(TaskQueryDTO queryDTO);

    /**
     * 获取用户任务列表
     */
    Page<TaskListVO> getUserTaskPage(Long userId, TaskQueryDTO queryDTO);

    /**
     * 获取任务详情
     */
    TaskVO getTaskDetail(Long id);

    /**
     * 创建任务（领取任务）
     */
    Long createTask(Long userId, TaskCreateDTO createDTO);

    /**
     * 更新任务
     */
    void updateTask(Long id, TaskUpdateDTO updateDTO);

    /**
     * 提交任务
     */
    void submitTask(Long id);

    /**
     * 审核任务
     */
    void reviewTask(Long id, Long reviewerId, TaskReviewDTO reviewDTO);

    /**
     * 回收任务
     */
    void reclaimTask(Long id, String reason);

    /**
     * 批量更新任务状态
     */
    void updateTaskStatusBatch(List<Long> taskIds, Integer status);

    /**
     * 获取用户任务统计
     */
    Integer getUserTaskCount(Long userId, Integer status);

    /**
     * 生成任务编号
     */
    String generateTaskNumber();
}